VOLUME 47

DESCRIPTION:	CP/M Utility Disk. *

NUMBER	SIZE	NAME		COMMENTS

		CATALOG.47	CONTENTS OF CP/M VOL. 47
47.1	7K	ABSTRACT.047	Abstracts and reviews.
47.2	10K	BMAP7/11.ASM	Bit Map program.
47.3	22K	COPYFAST.ASM	Revision of Tarbell's COPY.ASM.
47.4	2K	COPYFAST.COM	COM of above.
47.5	18K	CYBER.ASM	Bob Van Valzah's Modem program
				with buffering to Diablo Hytype.
47.6	22K	DIAL6/23.ASM	Modem program with autodial for PMMI.
47.7	2K	DIAL6/23.DOC	DOC of above.
47.8	8K	DIRS9/8.ASM	Sorted directory program.
47.9	3K	FLIP3.ASM	Flips Answer/Originate mode
				under BYE.COM.
47.10	14K	MODEM.LIB	Maclib library for MODEM7.
47.11	43K	MODEM7.ASM	Latest and greatest revision of
				Ward's "universal" MODEM.ASM.
47.12	8K	MODEM7.COM	COM of above.
47.13	16K	MODEM7.DOC	DOC of above.
47.14	3K	MODEM7.SET	Instructions for patching COM file
				if you don't have MAC*.
47.15	13K	PROM.ASM	Promburner program for the SSM PB1.
47.16	7K	UCOPY.ASM	Bob Van Valzah's version of the
				Tarbell COPY program.

* MAC and CP/M are trademarks of Digital Research, Pacific Grove, CA.------------------------------------------------------------
	  CP/M USERS' GROUP VOLUME 47 ABSTRACTS
    MODEM & DIRECTORY PROGRAMS FROM THE CP/M "NETWORK"
------------------------------------------------------------

This file contains abstracts on the following programs which
appear on this disk:

	BMAP7/11.ASM
	COPYFAST.ASM + .COM
	CYBER.ASM
	DIAL6/23.ASM
	DIRS9/8.ASM
	FLIP3.ASM
	MODEM.LIB + MODEM7.ASM + .COM + .DOC + .SET
	PROM.ASM
	UCOPY.ASM

The programs on this disk are the most recent (as of 
12/15/80) versions of various telecommunications & directory
utilities which, until now, had not been officially submitted
to the CP/M Users' Group but (a) have been extensively tested
and (b) are definitely in the public domain.  Some are just
updates of CPMUG programs; others are new.  A few need MAC
for assembly and/or contain equates which must be altered to
adjust the program to your system.  TYPE the file and check
the comments before assembling.

No individual DOC files have been included [except for
Mark Zeiger's MODEM7 and a DOC file written by Jim
Mills for the DIAL.ASM program-- editor].  Information on how
to use the programs is usually included in the ASM file
comments.

The programs were gathered by me from various MINICBBS systems
and are presented here as a service to those who lack (1) a
modem or (2) time or money for calling the MINICBBSs.
The comments below are mine [except as noted]; the programs
are by more talented people, chiefly Ward Christensen, Keith
Petersen, and Bruce Ratoff.

			      - Ben Bronson, CACHE, 10/18/80
			      - Jim Mills,   CACHE, 12/15/80

------------------------------------------------------------------

                      -- MODEM PROGRAMS --

MODEM7.ASM <== arbitrarily assigned the number 7 due to the many
		MODEM6's that were floating floating around.
This version of MODEM bears only a little resemblence to Ward's
earlier versions of MODEM, being greatly modified and enhanced.
Some of the new features since MODEM4:
	1. memory save feature in terminal mode, write to disk.
	2. PMMI Modem owners will be able to autodial.
	3. Batch mode: sender specifies files, ie:
	  SOB.600 MODEM.* MACROS.LIB FOO.COM ETC.FIL
	  This sends all modem.* files, macros.lib, foo.com & 
	  etc.fil in sequence.
	  (may not be used in conjunction with previous versions)

READ THE DOC AND SET FILES BEFORE USING MODEM7.  The most common
complaint I have received is that some of the commands are different
(only a few) from Ward's earlier versions.  These complaints are
mostly from people who have not read the DOC and SET files!
Mark could have commented the code better, and I added a few comments
myself, but other than that, no complaints and I think you'll
enjoy MODEM7 once you get used to the new command formats.
					Jim Mills

CYBER.ASM
This is Bob Van Valzah's program to do memory buffering
from the modem and print it out on a Diablo Hytype
printer.  Applications are limited due to the harware
required, but it is well commented and you should be
able to modify it to your system, or include it's
routines in other modem programs if you wish.
			Jim Mills

DIAL6/23.ASM
A (pulse-) dialing & terminal program.  You can
use it to call the SOURCE, MICRONET, CBBS, etc.,
but not to transfer programs (unlike MODEM) or
to save on-screen information (unlike PLINK).
In combination with those programs, however, it
makes a fairly complete communications package.
You have to be willing to go off-line periodic-
ally (by typing ^E) in order to switch from one
program to another.  This clumsy procedure will
presumably be outdated by a future superprogram
[such as MODEM7 -- ed.] that combines elements
of all three.  [see the .DOC file written by Jim Mills.]
			Ben Bronson

FLIP3.ASM
Useful only if you or someone else is running
your computer remotely (with PMMIBYE, DCHBYE,
or the equivalent).  When the remote user is
having problems with transferring a program
from your computer when it is sending in
answer mode (which it will be if it comes up
in response to an outside call), he/she can type
"FLIP" and have it switch to originate mode,
meanwhile switching his/her machine to answer
mode by typing "^E" and "MODEM RA..."  The
program transfer will probably go faster with
fewer retries due to checksum errors.  Originate
mode is at a lower frequency than answer mode
and thus more immune to line noise interference.
			Ben Bronson

------------------------------------------------------------

                -- DIRECTORY PROGRAMS --

BMAP7/11.ASM
A pretty little program than produces a bitmap
of your disk, originally from CPMUG (?) but
updated so as to allow for many combinations
of densities, sector sizes, & controllers.
Useful in combination with disk dump utilities.

DIRS9/8.ASM
Gives a sorted directory in 4 columns.  Other-
wise works just like the DIR built into CP/M.


------------------------------------------------------------
		DISK COPY PROGRAMS
------------------------------------------------------------

COPYFAST.ASM: source code for 8080 CP/M ASM.COM.
COPYFAST.COM: COM file of above.

COPYFAST was written by Chuck Weingart of CACHE as an
improvement on the old Tarbell COPY program that did
track at a time copies.  Chuck's version fills memory
from the source disk, then transfers it to the target
disk, reading back and verifying byte-by-byte as well
as a CRC check. The program does not require Tarbell
hardware, and can operate on a single disk system, if
desired. The code is commented and has several T/F
switches to select various options. Most programmers
should be able to modify it for their systems with no
trouble.				Jim Mills

UCOPY.ASM
UCOPY is Bob Van Valzah's version of Tarbell's copy
program and I used it for a long time with my single
drive system.  With a 63K system, only 5 disk changes
are required.  One of the drawbacks to this version
is that it does no verifying after the write to the
target disk.  It is useful for single disk systems
using the BVIOS and BVBOOT from volume 38.
			Jim Mills

---------------------------------------------------------------
			MISCELLANEOUS
---------------------------------------------------------------

PROM.ASM is a routine to program EPROMs with the contents of
CP/M .COM files, using the S.S.M. PB-1 programming board. Good
documentation is in the comments at the beginning of the
source, but running it is very simple: if a COM file is less
than 16K, just type PROM <filename> and answer the program
prompts. The actual routines are moderately commented and
structured, and can be assembled with ASM. As supplied, needs
at least a 28K CPM, and  probably requires editing to change
the PB-1 port address. It will not correctly program TMS2716's
in an appropriatly modified board without changing the source,
but does 2708's and 2716's correctly. 
(reviewed by Chuck Weingart)
DIAL6/23.DOC -- Documentation for DIAL.ASM as of 6/23/80

DIAL is a modem program for the PMMI that dials the phone
number for you, either from a number you type in, or from
a library of numbers contained in the program.  It has the
optional feature of being able to ring once, hang up and
dial again for calling computers that use the PMMIBYE
program with this facility.

To dial a number contained in the 'library' of numbers,
type the command line as follows:

		A>dial c

This format will dial the third number in the 'library' for
you -- including the ringback feature, if there is an 'R'
included with that number in the number table.  To dial a
number not in the table, type the number after the program
name on the command line:

		A>dial 1-312-545-8086

or you may simply type 'dial' and a 'return' to get into
'command mode'.  At this point you may type in whatever
number you wish.  To dial a number with ringback option,
first type an 'R' then the number.

To see examples, type:	A>dial x

To disconnect, type:	A>dial #

LIMITATIONS:  There is no facility for different baud rates.
The baud rate in the version provided is set at 300, and may be
changed, but you cannot change baud rates without re-assembling,
unless you add the routines to do so.  I recommend using Mark
Zeiger's MODEM7, although it doesn't provide a library of numbers,
nor does it provide the 'ringback' feature, but it is a much more
versatile program than this, which is provided in the Users'
Group because it does have some unique features.  See the ASM code
comments for more details on the operation.

			DOC file by Jim Mills of CACHE
              CP/M MODEM PROGRAM DOCUMENTATION
	    by Mark M. Zeiger and James K. Mills
			  11/04/80

This  program  uses  the  file transfer routines  written  by  Ward 
Christensen  in his CP/M file transfer program (V2.0 as of  8/6/79) 
and  is  compatable with his program in single file transfer  mode. 
Multi-file transfers are only possible between two systems  running 
the program described below.

This program has three functions:

        1.  Communication
        2.  Program transfer
        3.  Modem control (for PMMI Modem)


COMMUNICATIONS

The program may emulate a terminal or echo data back to sender (act
as a computer).

Terminal Mode  -  'T' Option

        The  terminal mode may be called with or without a file  name. 
        If  a  file  is  specified (it should be  a  new  file),  then 
        anything  received  by the modem may be saved  in  memory  and 
        later  written on disk.  The save feature is toggled ON/OFF by 
        Control-Y.  On  an IMSAI the front panel LEDs  will  indicated 
        that  memory save is toggled on by showing the binary value of 
        the ASCII character received. For those with no front panel, a 
        colon  (:) will be printed at the beginning of each line  when 
        memory save is active.  The colon will not be transmitted over 
        the modem nor will it be saved in memory.

        If  a  file  is not specified,  then memory save  can  not  be 
        activated.

        If  the memory buffer is full (the buffer is from the  top  of 
        the  program  to  the  bottom  of  BDOS),   the  contents  are 
        automatically  written  to  disk  (but the  file  is  not  yet 
        closed).  Communications  may  then continue with  the  buffer 
        reinitialized.  The  computer with which you are communicating 
        must  accept  the  X-ON and X-OFF  (Control-Q  and  Control-S) 
        conventions or data will be lost.

        When  communications are over,  use Control-E to exit from the 
        Terminal  mode and enter the Menu.  The file to which you  are 
        writing  must then be closed by using the  'WRT'  command.  If 
        this  is  not done,  all data will be lost.  I decided not  to 
        close  the file automatically since there will be  times  when 
        you leave terminal mode and then decide to re-enter.  This may 
        be done while in the Menu by using the 'RET' command.  You may 
        re-enter Terminal mode and save in the same file as many times 
        as  you wish as long as you have not closed the file with  the 
        'WRT' command.

        While  in  Terminal  mode,  Control-T will  put  you  in  File 
        Transfer mode.  This will allow you to send the contents of an 
        ASCII file over the modem. This routine does no error checking 
        and  there are no protocols specified between this program and 
        the  receiving computer other than that it should be ready  to 
        receive  data  via  the  modem.   Control-X  will  cancel  the 
        transfer.


Computer mode - 'E' Option

        This  mode  echos data received by other  computer.  Only  one 
        computer  may be in this mode at one time.  There is  no  save 
        feature  in this mode.  Useful if you wish to communicate with 
        somebody running the terminal portion of the program.

File transfer - 'S' and 'R' Options

        These  features  are  the same as in the  CP/M  Modem  program 
        written by Ward Christensen except that upon completion of the 
        transfer, control returns to the Menu unless the secondary 'T' 
        option has been selected.  In the latter case, control returns 
        to Terminal mode.  Remember that if you are operating a remote 
        computer   using   a  timesharing  program   (such   as   Ward 
        Christensen's "BYE"),  the remote should be instructed to send 
        or  receive  in  the  quiet (Q) mode as  a  secondary  option. 
        Examples  of  commands for sending and  receiving  are  listed 
        below.

Multi-file transfers

        Using  the B (batch) secondary option,  more than one file and 
        ambiguous filenames may be transferred. To send files, use the 
        primary  option  "S" and the secondary option "B" (along  with 
        any  other  secondary options and baudrate).  To  receive  the 
        files  being  sent,  use the "R" primary option  and  the  "B" 
        secondary  option.  Files may not be named since filenames are 
        sent by the sending program, but a disk drive may be specified 
        (or else the files are written to the default drive).

Backup option

        There  is  a byte at the beginning of the program (106H)  that 
        will  create a backup file if a file on the disk has the  same 
        name  as the file being received in multi-file  transfer  (see 
        MODEM.SET). If this byte is set to 0FFH, a backup file will be 
        created.  If  it is zero the file on the disk will be  deleted 
        before the new file is received. If you are running CP/M 2 and 
        a file on the disk is designated R/O or SYS,  a backup will be 
        created whether the byte at 106H is set or not.

        Be  careful - if you are running CP/M 1 and the drive on which 
        you  are receiving has an R/O file with the same name  created 
        by CP/M 2,  the R/O file can not be accessed (found,  changed, 
        erased,  etc.)  by CP/M 1.  You will therefore have two  files 
        with  the same name when you are running CP/M 2.  To fix  this 
        problem, use CP/M 1 to change the name of the file that is not 
        R/O. Then use CP/M 2 to do what you want with the R/O file.

        Examples:

        The  sender enters    SBOT.600 B:*.COM    to send all the  COM 
        files on disk B.  Also specified were originate mode 600  baud 
        (PMMI modem) and return to terminal mode when done.

        The  receiver enters     RBA.600    to receive all  the  files 
        being  sent on the default drive (also answer mode at 600 baud 
        for PMMI).


        The sender enters the command   SB.600  ASM.COM  *.HEX  B:M*.*
        which  will send ASM.COM from the default drive,  all the  HEX 
        files from the default drive,  and all the files starting with 
        "M" from the B drive.  [note that neither 'A' or 'O' were
	specified: default is to whatever mode the PMMI is in
	currently]

        Multifile transfers may only be done from the menu. It may not 
        be specified when the MODEM program is called.  In other words    
        A>MODEM  SAB  *.COM   will result in an INVALID  OPTION  error 
        message.


Return to Menu - 'M' option

        When asked to select an option, 'M' returns to Menu.

The MENU

        If  the Modem program is entered with no option,  the Menu  is 
        called.  The  Menu gives the choice of selecting the  standard 
        options as defined by Ward Christensen (T,  E,  R, and S). The 
        Terminal  mode has been greatly expanded as  described  above. 
        The "R" and "S" commands must be called with a filename or you 
        will be required to enter the primary command (S or R) and the 
        filename  again (but NOT the secondary options).  If you  want 
        multi-file  transfers,  then  the "R" option does not  need  a 
        filename.

  RET - You may also enter terminal mode using the 'RET' command,  but 
        no  data  will  be saved since a file may not  be  named  with 
        'RET'.  Use  the 'RET' command to RE-ENTER Terminal mode after 
        it  has  first been entered with the 'T' option.  If  this  is 
        done, you will still be able to save the communications if you 
        were doing so before you exitted the terminal mode.

  WRT - The  'WRT' command must be used after leaving  Terminal  mode. 
        This  writes  the  last buffer to disk and  closes  the  file. 
        Failure  to use the 'WRT' command results in loss of all  data 
        and a file of length zero.

  DEL - The  'DEL'  command  erases the most recent file  accessed  in 
        Terminal mode.  Useful if you decide after communications that 
        you don't want to save information just gathered.

  CPM - The 'CPM' command reboots and returns to CP/M.

  XPR - The  'XPR'  command is a toggle which causes the  menu  to  be 
        printed  or not printed.  Initially the menu is on unless  the 
        program is called with the "X" option (ie.  A>MODEM X ).

  DIR - The 'DIR' command lists the directory of a CP/M disk.  A drive 
        may  be specified (ie.  DIR B:) or the default drive  will  be 
        listed.  After  the directory is listed,  the menu will not be 
        printed whether XPR mode is on or off.  If XPR mode is on  and 
        you wish to see the menu, hit return.

FOR THE PMMI MODEM

  DSC - To disconnect you must use the 'DSC' command in the Menu.

        The original secondary options for the PMMI Modem (as  defined 
        by  Ward  Christensen) are "A" (answer mode),  "O"  (originate 
        mode), and baudrate selection. See examples below.

        Once  answer  or originate and a baudrate have  been  selected 
        (ie.  SO.450  NAME.TYP),  any subsequent options will use  the 
        same mode and buadrate. If you want to change the baudrate, it 
        may be done without changing the mode.  For instance,  if  you 
        are  in  originate mode at 450 baud,  then the command  'R.600 
        NAME.TYP'  will  allow you to receive a file at  600  baud  in 
        ORIGINATE mode.  If you want to change the ans/orig mode, then 
        you MUST select the baudrate again or it will default to 300.


  CAL - Allows  dialing  of number.  If a connection to a computer  is 
        established,  you  will  be able to  select  options  (usually 
        TO.xxx).   If no connection is made after 15 seconds, [changed
	to  25  seconds  in  distributed  version]     then  you  will 
        be  informed and be given the option of redialing or returning 
        to the menu.  The dial routine may also be specified when  the 
        Modem  program is called by entering  A>MODEM C.  No secondary 
        options will be accepted when the "C" option is used.   [Note:
	you cannot type:  CAL 312-545-8086  --  well, you can, but the
	number will be ignored and you will have to retype it when the
	program asks for it   --   in  the  latest  version  (11/4/80)
	there is a 'library' feature such as in DIAL.ASM.   To use the
	CAL function, type CAL and a return at the menu.  You will see
	a message   'WAITING FOR DIAL TONE'  then a lot of stuff about
	entering the number.   At this point you may type in a number,
	or  you  may  type  a  letter  which will designate one of the
	library numbers (which you must insert at assembly time).

  ^B -  Control-B  while  in Terminal (or Echo) mode allows change  of 
        baudrate "on-the-fly." A carriage return gives 300  baud;  all 
        other rates (110-600) must be explicitely stated.


LISTING OF COMMANDS AND OPTIONS

    Primary options

        S - send a CP/M file (must specify file/s)
        R - receive  a CP/M file (must name file unless B sec opt used)
        T - terminal mode (specify file if memory save wanted)
        E - terminal mode with echo
        M - return to menu
        X - used only when program is called to initially
            toggle menu off

    Secondary options

        B - multi-file mode for sending and receiving files
        T - return to terminal mode after transfer (memory save off)
        R - view what is received in file transfer
        S - view what is being sent in file transfer
        V - view what is being sent or received in file transfer
        T - Terminal mode (used with remotely controlled computer)
        O - originate mode (PMMI modem)
        A - answer mode (PMMI modem)
        .xxx - baud rate xxx (xxx = 110-600  PMMI modem)

EXAMPLES        (fn = filename,  ft = filetype)

        Send file, originate mode, 300 baud

                                   SO fn.ft

        Send another file, same mode and baudrate

                                   S fn.ft

        Receive  file on B drive,  600 baud,  ans mode,  view what  is 
        being received, return to terminal mode 

                               RART.600 B:fn.ft

        Send all COM files, no messages on console, same baud and mode 
        as last transfer

                                  SBQ *.COM

        Send two files from two different drives

                           SB A:fn1.ft1  B:fn2.ft2

        Receive files being sent by above on drive A (baudrate must be 
        same and modes opposite)

                                    RB A:

        Terminal mode,  save communication in file,  300 baud (default 
        rate),  originate mode (in terminal must type CTRL-Y to  start 
        save, in menu must type "WRT" to close file)

                                   TO fn.ft


ASSEMBLING THE PROGRAM

        You  must use Digital Researches' MAC to assemble the program. 
        The  files required are MODEM.ASM and  MODEM.LIB.   MACROS.LIB 
        does not actually contain any macros in the true sense, but it 
        does  contain  routines  that are necessary for the program to
	run (MFACCESS however does use nested macros as real macros).

        If you have a PMMI and an IMSAI,  you may assemble the file as 
        is.  If  you do not have an IMSAI with a front  panel,  change 
        IMSAIBYTE  to 'FALSE' (near the beginning of the program).  If 
        you  wish another character instead of the colon  to  indicate 
        when  memory  save  is active,  change "MVI A,':'  "  to  "MVI 
        A,'char'  " in the "TERM" routine where 'char' is the printing 
        character  you would like at the beginning of each  line  when 
        memory save is active.

        If you do not have a PMMI,  change the byte to 'FALSE' and put 
        your  modem status and data ports in the appropriate  equates. 
        The  labels  'MODRCVR'  and 'MODSNDR' should be  the  same  as 
        MODRCVB  and  MODSNDB  (the  bits tested) if  your  UART  uses 
        positive  logic  (JZ)  and should be zero if  your  UART  uses 
        negative  logic.  If you have a Z-80 (or maybe a  fast  8085), 
        change  the  'FASTCLK' byte to 'TRUE'.  If any port  or  modem 
        initialization must be done, put the initialization routine in 
        the  area  labeled INITMOD (replacing the PMMI  initialization 
        routine). See MODEM.SET for more details.

        If  you  have  a D.C.  Hayes Modem,  you may  incorporate  the 
        routines from MODEM.ASM V2.0 (as of 8/6/79).

        You  should also note the comment in the INBUFF  routine  near 
        the end of the program.

        Any problems or bugs, please call me:

				Or latest revisor:
        Mark M. Zeiger		James K. Mills
        198-01B 67th Ave.	824 Jordan Place
        Flushing, N.Y. 11365	Rockford, IL  61108
        (212) 454-6985		(815) 398-0579

